_gtk_size_group_compute_desired_size (GTK_WIDGET (layout), minimum_size, natural_size);
}
+
+
+/**
+ * gtk_extended_layout_is_height_for_width:
+ * @layout: a #GtkExtendedLayout instance
+ *
+ * Gets whether the widget prefers a height-for-width layout
+ * or a width-for-height layout
+ *
+ * Returns: %TRUE if the widget prefers height-for-width, %FALSE if
+ * the widget should be treated with a width-for-height preference.
+ *
+ * Since: 3.0
+ */
+gboolean
+gtk_extended_layout_is_height_for_width (GtkExtendedLayout *layout)
+{
+ GtkExtendedLayoutIface *iface;
+
+ g_return_val_if_fail (GTK_IS_EXTENDED_LAYOUT (layout), FALSE);
+
+ iface = GTK_EXTENDED_LAYOUT_GET_IFACE (layout);
+ if (iface->is_height_for_width)
+ return iface->is_height_for_width (layout);
+
+ /* By default widgets are height-for-width. */
+ return TRUE;
+}
+
+
+
/**
* gtk_extended_layout_get_width_for_height:
* @layout: a #GtkExtendedLayout instance
g_return_if_fail (GTK_IS_EXTENDED_LAYOUT (layout));
+ /* XXX Maybe here we do _gtk_size_group_compute_width_for_height()
+ * and return hard coded minimum widths/heights for for widgets with
+ * explicit size requests as well as fetch the common minimum/natural
+ * widths/heights for size grouped widgets.
+ */
+
iface = GTK_EXTENDED_LAYOUT_GET_IFACE (layout);
iface->get_width_for_height (layout, height, minimum_width, natural_width);
/* virtual table */
- void (*get_desired_size) (GtkExtendedLayout *layout,
- GtkRequisition *minimum_size,
- GtkRequisition *natural_size);
- void (*get_width_for_height) (GtkExtendedLayout *layout,
- gint height,
- gint *minimum_width,
- gint *natural_width);
- void (*get_height_for_width) (GtkExtendedLayout *layout,
- gint width,
- gint *minimum_height,
- gint *natural_height);
+
+ /* TODO: Change for get_desired_width()/get_desired_height() for clarity sake */
+ void (* get_desired_size) (GtkExtendedLayout *layout,
+ GtkRequisition *minimum_size,
+ GtkRequisition *natural_size);
+
+ gboolean (* is_height_for_width) (GtkExtendedLayout *layout);
+
+ void (* get_width_for_height) (GtkExtendedLayout *layout,
+ gint height,
+ gint *minimum_width,
+ gint *natural_width);
+ void (* get_height_for_width) (GtkExtendedLayout *layout,
+ gint width,
+ gint *minimum_height,
+ gint *natural_height);
};
-GType gtk_extended_layout_get_type (void) G_GNUC_CONST;
-
-void gtk_extended_layout_get_desired_size (GtkExtendedLayout *layout,
- GtkRequisition *minimum_size,
- GtkRequisition *natural_size);
-void gtk_extended_layout_get_width_for_height (GtkExtendedLayout *layout,
- gint height,
- gint *minimum_width,
- gint *natural_width);
-void gtk_extended_layout_get_height_for_width (GtkExtendedLayout *layout,
- gint width,
- gint *minimum_height,
- gint *natural_height);
+GType gtk_extended_layout_get_type (void) G_GNUC_CONST;
+
+void gtk_extended_layout_get_desired_size (GtkExtendedLayout *layout,
+ GtkRequisition *minimum_size,
+ GtkRequisition *natural_size);
+
+
+gboolean gtk_extended_layout_is_height_for_width (GtkExtendedLayout *layout);
+void gtk_extended_layout_get_width_for_height (GtkExtendedLayout *layout,
+ gint height,
+ gint *minimum_width,
+ gint *natural_width);
+void gtk_extended_layout_get_height_for_width (GtkExtendedLayout *layout,
+ gint width,
+ gint *minimum_height,
+ gint *natural_height);
+
G_END_DECLS